home *** CD-ROM | disk | FTP | other *** search
- ⓪ IMPLEMENTATION MODULE StringEditor;⓪ ⓪ (*$Y+,H+,R-*)⓪ ⓪ FROM SYSTEM IMPORT ASSEMBLER;⓪ ⓪ IMPORT Strings;⓪ ⓪ FROM MOSGlobals IMPORT Key;⓪ ⓪ ⓪ PROCEDURE StdKeyCmd (k: Key): Commands;⓪"(*$L-*)⓪"BEGIN⓪$ASSEMBLER⓪(MOVE.W -(A3),D0 ; scan⓪(SWAP D0⓪(CLR D0⓪(SUBQ.L #1,A3 ; ctrl⓪(MOVE.B -(A3),D0 ; ch⓪(LEA tab(PC),A0⓪&lup:⓪(MOVE.L (A0)+,D1⓪(MOVE.W (A0)+,D2⓪(BEQ ende⓪(CMP.L D1,D0⓪(BNE lup⓪&ende:⓪(MOVE D2,(A3)+⓪(RTS⓪ ⓪&tab:⓪(DC.L $72000D DC.W enter⓪(DC.L $1C000D DC.W enter⓪(DC.L $01001B DC.W clrln⓪(DC.L $610000 DC.W abort⓪(DC.L $520000 DC.W insert⓪(DC.L $4B0000 DC.W left⓪(DC.L $4D0000 DC.W right⓪(DC.L $730000 DC.W wdleft (* Ctrl-left *)⓪(DC.L $740000 DC.W wdright (* Ctrl-right *)⓪(DC.L $53007F DC.W delete⓪(DC.L $0E0008 DC.W backspace⓪(DC.L $470000 DC.W clreol (* Home *)⓪(DC.L $470037 DC.W clrln (* Shift-Home *)⓪(DC.L $4B0034 DC.W sol (* Shift-left *)⓪(DC.L $4D0036 DC.W eol (* Shift-right *)⓪(DC.L $53001F DC.W delwdright (* Ctrl-Delete *)⓪(DC.L 0 DC.W none⓪$END⓪"END StdKeyCmd;⓪"(*$L=*)⓪ ⓪ PROCEDURE StdAscCmd (k: Key): Commands;⓪"(*$L-*)⓪"BEGIN⓪$ASSEMBLER⓪(SUBQ.L #3,A3 ; scan, ctrl⓪(MOVE.B -(A3),D0 ; ch⓪(CLR D2⓪(LEA tab(PC),A0⓪&lup:⓪(MOVE.B (A0)+,D1⓪(MOVE.B (A0)+,D2⓪(BEQ ende⓪(CMP.B D1,D0⓪(BNE lup⓪&ende:⓪(MOVE D2,(A3)+⓪(RTS⓪ ⓪&tab:⓪(DC.B 13 DC.B enter⓪(DC.B 3 DC.B abort⓪(DC.B 8 DC.B backspace⓪(DC.B 21 DC.B right⓪(DC.B 127 DC.B delete⓪(DC.B 9 DC.B eol⓪(DC.B 27 DC.B clrln⓪(DC.B 24 DC.B clrln⓪(DC.B 0 DC.B none⓪$END⓪"END StdAscCmd;⓪"(*$L=*)⓪ ⓪ PROCEDURE StdWSCmd (k: Key): Commands;⓪"(*$L-*)⓪"BEGIN⓪$ASSEMBLER⓪(SUBQ.L #3,A3 ; scan, ctrl⓪(MOVE.B -(A3),D0 ; ch⓪(CLR D2⓪(LEA tab(PC),A0⓪&lup:⓪(MOVE.B (A0)+,D1⓪(MOVE.B (A0)+,D2⓪(BEQ ende⓪(CMP.B D1,D0⓪(BNE lup⓪&ende:⓪(MOVE D2,(A3)+⓪(RTS⓪ ⓪&tab:⓪(DC.B 13 DC.B enter⓪(DC.B 3 DC.B abort⓪(DC.B 8 DC.B backspace⓪(DC.B 27 DC.B clrln⓪(DC.B 127 DC.B delete⓪(DC.B 19 DC.B left⓪(DC.B 20 DC.B delwdright⓪(DC.B 22 DC.B insert⓪(DC.B 1 DC.B eol⓪(DC.B 4 DC.B right⓪(DC.B 6 DC.B eol⓪(DC.B 0 DC.B none⓪$END⓪"END StdWSCmd;⓪"(*$L=*)⓪ ⓪ VAR ok: BOOLEAN;⓪ ⓪ PROCEDURE Edit( VAR dStr: ARRAY OF CHAR; mayCtrl: BOOLEAN;⓪0hdl_write: WrChProc; hdl_writeString: WrStrProc;⓪0hdl_moveCursor: CrsrProc; hdl_readCmd: RdProc );⓪ ⓪"VAR limit, sLen, index: INTEGER;⓪&finish: BOOLEAN;⓪ ⓪"PROCEDURE ConsOutRpt( c : CHAR; no : INTEGER );⓪$VAR i: INTEGER;⓪$BEGIN⓪&FOR i:= 1 TO no DO hdl_write(c) END⓪$END ConsOutRpt;⓪ ⓪"PROCEDURE DelR;⓪$BEGIN⓪&IF index < sLen THEN⓪(Strings.Delete (dStr,index,1,ok);⓪(hdl_moveCursor(-index);⓪(hdl_writeString (dStr);⓪(hdl_write(' ');⓪(hdl_moveCursor(-(sLen-index));⓪(DEC (sLen)⓪&END⓪$END DelR;⓪ ⓪"PROCEDURE ClrEoln;⓪$BEGIN⓪&ConsOutRpt(' ',sLen + index);⓪&hdl_moveCursor(-(sLen-index));⓪&sLen:= index;⓪&dStr[sLen]:=0C;⓪$END ClrEoln;⓪ ⓪"PROCEDURE pos1;⓪$BEGIN⓪&hdl_moveCursor(-index);⓪&index:= 0;⓪$END pos1;⓪ ⓪"VAR i: CARDINAL;⓪&keycode: Commands;⓪&ch: CHAR;⓪ ⓪"BEGIN (* EditString *)⓪$limit:= HIGH (dStr)+1;⓪$finish:= FALSE;⓪$index:= 0;⓪$sLen:= Strings.Length (dStr);⓪$hdl_writeString (dStr);⓪$hdl_moveCursor( -sLen );⓪$REPEAT⓪&hdl_readCmd (keycode,ch);⓪&CASE keycode OF⓪&|left:⓪(IF index > 0 THEN⓪*DEC( index);⓪*hdl_moveCursor(-1)⓪(END⓪&|right:⓪(IF ( index < sLen) & ( index < limit) THEN⓪*INC( index);⓪*hdl_moveCursor(1)⓪(END⓪&|backspace:⓪(IF index > 0 THEN⓪*DEC( index);⓪*hdl_moveCursor(-1);⓪*DelR⓪(END⓪&|delete:⓪(DelR⓪&|clrln:⓪(pos1;⓪(ClrEoln⓪&|clreol:⓪(ClrEoln⓪&|sol:⓪(pos1;⓪&|eol:⓪(hdl_moveCursor (sLen-index);⓪(index:= sLen⓪&|enter:⓪(finish:= TRUE⓪&|abort:⓪(pos1;⓪(ClrEoln;⓪(finish:= TRUE⓪&|insert:⓪(IF (index < sLen) & (sLen < limit) THEN⓪*Strings.Insert (' ',index,dStr,ok);⓪*INC (sLen);⓪*hdl_moveCursor(-index);⓪*hdl_writeString (dStr);⓪*hdl_moveCursor (-(sLen-index))⓪(END;⓪&|none:⓪(IF (index<limit) AND (ch#0C) AND (mayCtrl OR (ch>=' ')) THEN⓪*hdl_write (ch);⓪*dStr [index]:= ch;⓪*IF index >= sLen THEN⓪,INC (sLen);⓪,IF sLen < limit THEN⓪.dStr [sLen]:= 0C;⓪,END⓪*END;⓪*INC(index);⓪(END⓪&ELSE⓪((* nix *)⓪&END;⓪$UNTIL finish;⓪$hdl_moveCursor (sLen - index)⓪"END Edit;⓪ ⓪ BEGIN⓪"StdCmd:= StdKeyCmd;⓪ END StringEditor.⓪ ə
- (* $00000A7F$FFEE9FCA$FFEE9FCA$FFEE9FCA$FFEE9FCA$FFEE9FCA$FFEE9FCA$FFEE9FCA$FFEE9FCA$FFEE9FCA$FFEE9FCA$FFEE9FCA$FFEE9FCA$FFEE9FCA$FFEE9FCA$00000C53$FFEE9FCA$FFEE9FCA$FFEE9FCA$FFEE9FCA$FFEE9FCA$FFEE9FCA$FFEE9FCA$FFEE9FCA$FFEE9FCA$FFEE9FCA$FFEE9FCA$FFEE9FCA$FFEE9FCA$FFEE9FCA$FFEE9FCA$FFEE9FCA$FFEE9FCA$FFEE9FCA$FFEE9FCA$FFEE9FCA$FFEE9FCA$FFEE9FCA$FFEE9FCA$FFEE9FCA$FFEE9FCA$FFEE9FCAÇ$00000036T.......T.......T.......T.......T.......T.......T.......T.......T.......T.......$000010F4$0000110E$00001128$00001198$0000125B$00000028$00000036$00000D07$00000D76$00000E54$00000E6E$00000E92$00000EEC$00000F4D$00000F98$00001016£Çé*)
-